#pragma once
#include "TreeNode.h"
class ListNode
{
public:
	int val;
	ListNode* next;
	ListNode() : val(0), next(nullptr) {}
	ListNode(int x) : val(x), next(nullptr) {}
	ListNode(int x, ListNode* next) : val(x), next(next) {}
	static ListNode* reverseKGroup(ListNode* head, int k);
	static ListNode* rotateRight(ListNode* head, int k);
	static ListNode* deleteDuplicates(ListNode* head);
	static ListNode* deleteDuplicates2(ListNode* head);
	static ListNode* partition(ListNode* head, int x);
	static ListNode* reverseBetween(ListNode* head, int left, int right);
	static TreeNode* sortedListToBST(ListNode* head);
	static ListNode* detectCycle(ListNode* head);
	static void reorderList(ListNode* head);
	static ListNode* getIntersectionNode(ListNode* headA, ListNode* headB);
	static int LengthOfList(ListNode* head);
	static ListNode* insertionSortList(ListNode* head);
	static ListNode* sortList(ListNode* head, ListNode* last);
	static ListNode* sortList(ListNode* head);
	static bool isPalindrome(ListNode* head);
	static void deleteNode(ListNode* node);
	static ListNode* oddEvenList(ListNode* head);
	static ListNode* mergeInBetween(ListNode* list1, int a, int b, ListNode* list2);
};

